#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @FileName  :bullet.py
# @Time      :2021/4/11 16:07
# @Author    :Letquit
"""
文件说明：子弹

"""
import pygame
from pygame.sprite import Sprite    # 导入Sprite类
# 通过Sprite，可将游戏中相关的元素编组，静儿同时操作编组中的所有元素。


class Bullet(Sprite):  # 继承Sprite
    """一个对飞船发射的子弹进行管理的类"""

    def __init__(self, ai_settings, screen, ship):
        """在飞船所处的位置创建一个子弹对象"""
        super(Bullet, self).__init__()
        self.screen = screen

        # 在(0, 0)处创建一个表示子弹的矩形，再设置正确的位置
        self.rect = pygame.Rect(0, 0, ai_settings.bullet_width, ai_settings.bullet_height)  # 创建子弹属性rect
        # 提供矩形左上角的x、y坐标，还有矩形的宽度和高度
        # 接下来的代码将矩形移动到正确的位置(飞船的位置)
        self.rect.centerx = ship.rect.centerx   # 子弹的位置是飞船的位置
        self.rect.top = ship.rect.top   # 子弹的顶端是飞船的顶端

        # 存储用小数表示的子弹位置
        self.y = float(self.rect.y)    # 小数值方便微调速度

        self.color = ai_settings.bullet_color   # 存储子弹的颜色
        self.speed_factor = ai_settings.bullet_speed_factor   # 存储子弹的速度

    def update(self):   # 管理子弹的位置
        """向上移动子弹"""
        # 更新表示子弹位置的数值
        self.y -= self.speed_factor     # 更新子弹的位置
        # 更新表示子弹的rect的位置
        self.rect.y = self.y
        # 子弹发射后x坐标始终不变

    def draw_bullet(self):
        """在屏幕上绘制子弹"""
        pygame.draw.rect(self.screen, self.color, self.rect)    # 使用self.color中的颜色填充表示子弹的rect占据的屏幕部分


if __name__ == "__main__":
    run_code = 0
